{$CLEO .cm}
{$USE cleo+}
0000:
const
   CustomModel=999@ 
   GivenTroops =998@
   GivenVehicle =997@
   
   enemy_team=7
end
060A: create_decision_maker_type 2 store_to  310@ // decision\allowed\m_.ped files
07E6: copy_group_decision_maker  310@ to 311@
0395: clear_area 1 at  -3159.4319 -2515.2256 11.138 radius 999999.0

model.Load(#M4)
model.Load(#MP5LNG)
model.Load(#SWAT)
model.Load(#DESERT_EAGLE)
model.Load(#SHOTGSPA)
model.Load(#CHROMEGUN)
model.Load(#PATRIOT)
model.Load(#ARMY)
model.Load(#CARGOBOB)
model.Load(#HUNTER)
model.Load(#MESA)
model.Load(#BARRACKS)

load_requested_models
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at -3178.3372 -2446.2952 12.488
actor.Angle( $PLAYER_ACTOR ) =  183.3748
if coop
then
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at  -3178.0918 -2441.3257 12.488
actor.Angle( $PLAYER_ACTOR ) = 183.3748

end
//LOAD
if     
model.Available(#ARMY)
then
   40@=actor.Create(8,#ARMY, -3176.353, -2440.6172, 12.488)
   actor.Angle(40@)=104.2817
   41@=actor.Create(8,#ARMY,-3175.9199, -2438.3088, 12.488 )
   actor.Angle(41@)=104.2817 
   42@=actor.Create(8,#ARMY, -3176.6482, -2435.8352, 12.488)
   actor.Angle(42@)=104.2817 
   43@=actor.Create(8,#ARMY,-3176.4905, -2432.4602, 12.488 )
   actor.Angle(43@)=104.2817
   44@=actor.Create(8,#ARMY, -3179.7803, -2428.4988, 12.488)
   actor.Angle(44@)= 104.2817
   45@=actor.Create(8,#ARMY, -3182.2695, -2425.2783, 12.488)
   actor.Angle(45@)= 104.2817
   46@=actor.Create(8,#ARMY,-3183.8462, -2421.0691, 12.5054 )
   actor.Angle(46@)= 104.2817
   47@=actor.Create(8,#ARMY,-3181.6169, -2415.2385, 12.5055 )
   actor.Angle(47@)= 104.2817
    
      0085:  GivenTroops = 40@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4 
      0085:  GivenTroops = 41@// (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4 
      0085:  GivenTroops = 42@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4 
      0085:  GivenTroops = 43@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
      0085:  GivenTroops = 44@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
      0085:  GivenTroops = 45@// (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
      0085:  GivenTroops = 46@// (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
      0085:  GivenTroops = 47@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
else    
    jump @failed
end 
if   and
model.Available( #PATRIOT ) 
model.Available(#ARMY)

then
   48@=actor.Create(8,#ARMY,-3178.9526, -2461.2007, 12.488 )
   actor.Angle(48@)=2.9121 
   49@=actor.Create(8,#ARMY, -3175.9661, -2450.7747, 12.488)
   actor.Angle(49@)= 186.1673
   50@=actor.Create(8,#ARMY,-3175.7429, -2448.4431, 12.488 )
   actor.Angle(50@)= 186.1673
   51@=actor.Create(8,#ARMY, -3175.6733, -2444.8787, 12.488)
   actor.Angle(51@)= 186.1673
   52@=actor.Create(8,#ARMY, -3175.6277, -2442.5315, 12.488)
   actor.Angle(52@)= 186.1673
      actor.GiveWeaponAndAmmo(48@,m4,99999 ) 
      actor.GiveWeaponAndAmmo(49@,m4,99999 ) 
      actor.GiveWeaponAndAmmo(50@,m4,99999 ) 
      actor.GiveWeaponAndAmmo(51@,m4,99999 ) 
      actor.GiveWeaponAndAmmo(52@,m4,99999 ) 
      0085:  GivenTroops =  48@
      GOSUB @BUILD_ALLY_STATS_WITH_M4       
      0085:  GivenTroops =  49@
      GOSUB @BUILD_ALLY_STATS_WITH_M4       
      0085:  GivenTroops =  50@
      GOSUB @BUILD_ALLY_STATS_WITH_M4       
      0085:  GivenTroops =  51@
      GOSUB @BUILD_ALLY_STATS_WITH_M4       
      0085:  GivenTroops =  52@
      GOSUB @BUILD_ALLY_STATS_WITH_M4       
     
    60@=car.Create( #PATRIOT , -3161.7351, -2534.5874, 10.8788 ) 
    car.Angle(60@)= 48.0493
    0085: GivenVehicle = 60@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED
    
    53@=actor.CreateAsDriver( 8 , #ARMY ,60@ )
    54@=actor.CreateAsPassenger( 8 , #ARMY , 60@ , 0 )
      0085:  GivenTroops =  53@
      GOSUB @BUILD_ALLY_STATS_WITH_M4     
      0085:   GivenTroops = 54@
      GOSUB @BUILD_ALLY_STATS_WITH_M4    

    61@=car.Create( #PATRIOT , -3133.6355, -2564.8787, 10.8788 ) 
    car.Angle(61@)=  46.9019
    0085: GivenVehicle = 61@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED

    55@=actor.CreateAsDriver( 8 , #ARMY ,61@ )
    56@=actor.CreateAsPassenger( 8 , #ARMY , 61@ , 0 )
      0085:   GivenTroops = 55@
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
      0085:   GivenTroops = 56@
      GOSUB @BUILD_ALLY_STATS_WITH_M4    
      
     0615: define_AS_pack_begin 555@
     05D1: AS_actor -1  drive_car -1  to  -3181.1016 -2518.8921 11.0688 speed 15.0 2 model #NULL 5
     05D1: AS_actor -1  drive_car -1  to  -3250.3955 -2452.8691 10.8788 speed 15.0 2 model #NULL 5
     05D1: AS_actor -1  drive_car -1  to  -3670.7749 -2051.4529 10.8788 speed 15.0 2 model #NULL 5
     05D1: AS_actor -1  drive_car -1  to  -3711.749 -2011.0332 11.4652 speed 15.0 2 model #NULL 5 
 
     0618: assign_actor 53@ to_AS_pack 555@
     0618: assign_actor 55@ to_AS_pack 555@
     061B: remove_references_to_AS_pack 555@

else    
    jump @failed
end 


//GOSUB @BUILD_ALLY_STATS 
     0615: define_AS_pack_begin 555@ 
     05D3: AS_actor -1 goto_point  -3183.9526 -2565.51 11.158 mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point -3197.9043 -2628.9395 11.1687  mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point -3197.9041 -2929.7043 11.1687  mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point -3197.5825 -3077.062 11.1687  mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point -3197.8372 -3203.8689 11.1687  mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point -3162.1528 -3240.3699 11.1687  mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point -3162.3259 -3324.5483 11.1687 mode 6 time 999999999 ms // versionA
     05D3: AS_actor -1 goto_point  -3158.1729 -3385.9214 11.1687  mode 6 time 999999999 ms // versionA 


     0618: assign_actor 40@ to_AS_pack 555@
     0618: assign_actor 41@ to_AS_pack 555@
     0618: assign_actor 42@ to_AS_pack 555@
     0618: assign_actor 43@ to_AS_pack 555@
     0618: assign_actor 44@ to_AS_pack 555@
     0618: assign_actor 45@ to_AS_pack 555@
     0618: assign_actor 46@ to_AS_pack 555@
     0618: assign_actor 47@ to_AS_pack 555@
     0618: assign_actor 48@ to_AS_pack 555@
     0618: assign_actor 49@ to_AS_pack 555@
     0618: assign_actor 50@ to_AS_pack 555@
     0618: assign_actor 51@ to_AS_pack 555@
     0618: assign_actor 52@ to_AS_pack 555@ 
     061B: remove_references_to_AS_pack 555@
 
if   and
model.Available(#PATRIOT ) 
model.Available(#SWAT)
model.Available(#BARRACKS)         
then
   70@=actor.Create(enemy_team,#SWAT, -3171.3264, -2823.186, 23.2055)
   actor.Angle(70@)= 94.8241 
   0085:  GivenTroops =  70@
   GOSUB @BUILD_ENEMY_STATS    
   71@=actor.Create(enemy_team,#SWAT,-3171.7424, -2853.6133, 23.2055 )
   actor.Angle(71@)=  111.9314
   0085:  GivenTroops =  71@
   GOSUB @BUILD_ENEMY_STATS    
   72@=actor.Create(enemy_team,#SWAT, -3171.3008, -2918.4883, 23.2055)
   actor.Angle(72@)= 86.096 
   0085:  GivenTroops =  72@
   GOSUB @BUILD_ENEMY_STATS    
   73@=actor.Create(enemy_team,#SWAT, -3210.2849, -2908.6731, 23.2055)
   actor.Angle(73@)=  281.7585
   0085:  GivenTroops =  73@
   GOSUB @BUILD_ENEMY_STATS    
   74@=actor.Create(enemy_team,#SWAT,-3210.4282, -2760.3115, 23.2055 )
   actor.Angle(74@)= 253.5033 
   0085:  GivenTroops =  74@
   GOSUB @BUILD_ENEMY_STATS    
   
   888@=269.2052
   75@=actor.Create(enemy_team,#SWAT, -3210.6941, -2684.1033, 23.2055) 
   76@=actor.Create(enemy_team,#SWAT,-3183.8135, -2708.7354, 23.2055 )
   actor.Angle(75@)= 349.3343 
   actor.Angle(76@)=888@  
   888@=  8.6385
   77@=actor.Create(enemy_team,#SWAT, -3171.0977, -2750.3979, 23.2055)
   78@=actor.Create(enemy_team,#SWAT, -3195.1653, -2814.3306, 11.1862)
   79@=actor.Create(enemy_team,#SWAT, -3202.0066, -2789.2861, 11.1862)
   80@=actor.Create(enemy_team,#SWAT,-3180.7717, -2853.5576, 11.1862 )
   81@=actor.Create(enemy_team,#SWAT, -3195.1201, -2912.7083, 11.1862)
   82@=actor.Create(enemy_team,#SWAT, -3201.5898, -2986.6702, 11.1862)
   83@=actor.Create(enemy_team,#SWAT,-3167.252, -3059.7046, 11.1862)
   
   actor.Angle(77@)= 8.6385 
   actor.Angle(78@)= 888@
   actor.Angle(79@)= 888@
   actor.Angle(80@)= 888@
   actor.Angle(81@)= 888@
   actor.Angle(82@)= 888@
   actor.Angle(83@)= 888@
   0085:  GivenTroops =  75@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  76@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  77@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  78@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  79@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  80@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  81@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  82@
   GOSUB @BUILD_ENEMY_STATS    
   0085:  GivenTroops =  83@
   GOSUB @BUILD_ENEMY_STATS 
   
   
   //Ally troops defend train area 
   
   90@=car.Create(#PATRIOT,-3166.6162, -2980.873, 11.1687)
   car.Angle(90@)=118.638


   //Army driving done there
   91@=car.Create(#PATRIOT,-3179.6636, -2867.0105, 11.1862 )
   car.Angle(91@)=179.6375
   92@=car.Create(#PATRIOT,-3175.968, -2885.6013, 11.1862 )
   car.Angle(92@)=181.6348
   
   //Enemy  //Roadblock
   93@=car.Create(#PATRIOT, -3175.4272, -3044.9209, 11.1862)
   car.Angle(93@)=93.6348
   94@=car.Create(#PATRIOT,-3185.6309, -3046.0784, 11.1687)
   car.Angle(94@)=298.6642
   95@=car.Create(#BARRACKS, -3170.0901, -3026.8633, 11.1687)
   car.Angle(95@)=4.0953
    0085: GivenVehicle = 90@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED     
    0085: GivenVehicle = 91@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED     
    0085: GivenVehicle = 92@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED     
    0085: GivenVehicle = 93@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED     
    0085: GivenVehicle = 94@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED     
    0085: GivenVehicle = 95@     // (int)
    gosub @BUILD_ARMYCAR_STATS_LOCKED     
    //COVER ARMY 
    0407: store_coords_to 120@ 121@ 122@  from_car 90@ with_offset 2.0 0.0 -1.0 
       125@ = car.Angle(90@)
       125@ += 90.0
       100@=actor.Create(8,#ARMY, 120@, 121@, 122@  )
       actor.Angle(100@)= 125@
       
       0407: store_coords_to 120@ 121@ 122@  from_car 90@ with_offset 2.0 -2.0 -1.0 
    
       101@=actor.Create(8,#ARMY, 120@, 121@, 122@  )
       actor.Angle(101@)= 125@
    
      0085:  GivenTroops = 100@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4     
      0085:  GivenTroops = 101@ // (int)
      GOSUB @BUILD_ALLY_STATS_WITH_M4     
      

        102@=actor.CreateAsDriver( 8 , #ARMY ,91@ )
        103@=actor.CreateAsPassenger( 8 , #ARMY , 91@ , 0 )
          0085:   GivenTroops = 102@
          GOSUB @BUILD_ALLY_STATS_WITH_M4    
          0085:   GivenTroops = 103@
          GOSUB @BUILD_ALLY_STATS_WITH_M4    
     
         //driving to RoadBlock       
         0615: define_AS_pack_begin 555@
         05D1: AS_actor -1  drive_car -1  to -3179.5608 -3028.679 11.1862 speed 20.0 2 model #NULL 5 
         0633: AS_actor -1 exit_car
     
         0618: assign_actor 102@ to_AS_pack 555@
         0618: assign_actor 103@ to_AS_pack 555@
         061B: remove_references_to_AS_pack 555@      
          104@=actor.CreateAsDriver( 8 , #ARMY ,92@ )
          105@=actor.CreateAsPassenger( 8 , #ARMY , 92@ , 0 )
          0085:   GivenTroops = 104@
          GOSUB @BUILD_ALLY_STATS_WITH_M4    
          0085:   GivenTroops = 105@
          GOSUB @BUILD_ALLY_STATS_WITH_M4    
         //driving to RoadBlock       
         0615: define_AS_pack_begin 555@
         05D1: AS_actor -1  drive_car -1  to  -3176.2617 -3029.512 11.1862 speed 20.0 2 model #NULL 5 
         0633: AS_actor -1 exit_car
     
         0618: assign_actor 104@ to_AS_pack 555@
         0618: assign_actor 105@ to_AS_pack 555@
         061B: remove_references_to_AS_pack 555@      
         
   /////////////////////////////////  
     
else    
    jump @failed
end 

     show_text_highpriority "Let's do the mission!" 3000 
while true 
wait 0
     if cheat "exit"
     then
        show_styled_text "~r~Mission Aborted!" 3000 5 
        jump @failed 
     end
end 

:failed

model.Destroy(#M4)
model.Destroy(#MP5LNG)
model.Destroy(#SWAT)
model.Destroy(#DESERT_EAGLE)
model.Destroy(#SHOTGSPA)
model.Destroy(#CHROMEGUN)
model.Destroy(#PATRIOT)
model.Destroy(#ARMY)
model.Destroy(#CARGOBOB)
model.Destroy(#HUNTER)
mission_cleanup
end_Thread 
0A93: terminate_this_custom_script

:BUILD_ALLY_STATS 
  actor.Health(GivenTroops)=1000
actor.WeaponAccuracy(GivenTroops)=80
actor.SetWalkStyle(GivenTroops, "PLAYER")
0446: set_actor GivenTroops dismemberment_possible 0
0946: set_actor GivenTroops actions_uninterupted_by_weapon_fire 1
04D8: set_actor   GivenTroops drowns_in_water 0
07DD: set_actor   GivenTroops  attack_rate 92 // previously known as temper_to
060B: set_actor GivenTroops decision_maker_to 311@
081A: set_actor GivenTroops weapon_skill_to 1 
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 6 // see ped.dat
09B5: set_actor GivenTroops signal_after_kill 0
07FE: set_actor GivenTroops fighting_style_to 7 moves 6
077A: set_actor GivenTroops acquaintance 1 to_actors_pedtype 0 // see ped.dat
077A: set_actor GivenTroops acquaintance 1 to_actors_pedtype 1 // see ped.dat
077A: set_actor GivenTroops acquaintance 3 to_actors_pedtype 6 // see ped.dat
077A: set_actor GivenTroops acquaintance 2 to_actors_pedtype 4 // see ped.dat
077A: set_actor GivenTroops acquaintance 2 to_actors_pedtype 5 // see ped.dat
077A: set_actor GivenTroops acquaintance 1 to_actors_pedtype 8 // see ped.dat
0816: set_actor GivenTroops dont_chase_victim 1

//0961: set_actor GivenTroops keep_tasks_after_cleanup 1  

RETURN 



:BUILD_ALLY_STATS_WITH_M4 
actor.GiveWeaponAndAmmo(GivenTroops,m4,99999 ) 
actor.Health(GivenTroops)=1000
actor.WeaponAccuracy(GivenTroops)=80
actor.SetWalkStyle(GivenTroops, "PLAYER")
0446: set_actor GivenTroops dismemberment_possible 0
0946: set_actor GivenTroops actions_uninterupted_by_weapon_fire 1
04D8: set_actor   GivenTroops drowns_in_water 0
07DD: set_actor   GivenTroops  attack_rate 92 // previously known as temper_to
060B: set_actor GivenTroops decision_maker_to 311@
081A: set_actor GivenTroops weapon_skill_to 1 
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 6 // see ped.dat
09B5: set_actor GivenTroops signal_after_kill 0
07FE: set_actor GivenTroops fighting_style_to 7 moves 6
077A: set_actor GivenTroops acquaintance 1 to_actors_pedtype 0 // see ped.dat
077A: set_actor GivenTroops acquaintance 1 to_actors_pedtype 1 // see ped.dat
077A: set_actor GivenTroops acquaintance 3 to_actors_pedtype 6 // see ped.dat
077A: set_actor GivenTroops acquaintance 2 to_actors_pedtype 4 // see ped.dat
077A: set_actor GivenTroops acquaintance 2 to_actors_pedtype 5 // see ped.dat
077A: set_actor GivenTroops acquaintance 1 to_actors_pedtype 8 // see ped.dat
0816: set_actor GivenTroops dont_chase_victim 1

return 


:BUILD_ENEMY_STATS 

0209: 777@ = random_int_in_ranges 400 801
actor.Health(GivenTroops)=777@
0209: 777@ = random_int_in_ranges 80 95
actor.WeaponAccuracy(GivenTroops)=777@
actor.SetWalkStyle(GivenTroops, "PLAYER")
0446: set_actor GivenTroops dismemberment_possible 0
0946: set_actor GivenTroops actions_uninterupted_by_weapon_fire 1
04D8: set_actor   GivenTroops drowns_in_water 0
0209: 777@ = random_int_in_ranges 86 100
07DD: set_actor   GivenTroops  attack_rate 777@ // previously known as temper_to
060B: set_actor GivenTroops decision_maker_to 311@
081A: set_actor GivenTroops weapon_skill_to 1 
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 0 // see ped.dat
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 1 // see ped.dat
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 6 // see ped.dat
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 4 // see ped.dat
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 5 // see ped.dat
077A: set_actor GivenTroops acquaintance 4 to_actors_pedtype 8 // see ped.dat
09B5: set_actor GivenTroops signal_after_kill 0
07FE: set_actor GivenTroops fighting_style_to 7 moves 6
0816: set_actor GivenTroops dont_chase_victim 1

0209: 777@ = random_int_in_ranges 0 3
if 777@==0
then
   actor.GiveWeaponAndAmmo(GivenTroops,m4,99999)
end
if 777@==1
then
   actor.GiveWeaponAndAmmo(GivenTroops,mp5,99999)
end
if 777@==2
then
   actor.GiveWeaponAndAmmo(GivenTroops,Shotgun,99999)
end
//0961: set_actor GivenTroops keep_tasks_after_cleanup 1  

RETURN 

:BUILD_ARMYCAR_STATS_LOCKED
  car.DoorStatus(GivenVehicle,2)
  car.Health(GivenVehicle)=25000  
  09C4: set_car GivenVehicle gas_tank_explosion_enabled 0

return